package com.lin.generator.domain.message;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(value = "统一返回实体类")
public class ResponseResult<T> {

    public static final int OK_CODE = 200;

    public static final int FAIL_CODE = 500;


    @ApiModelProperty("状态码")
    private int code;

    @ApiModelProperty("信息")
    private String message;

    @ApiModelProperty("数据")
    private T data;


    @ApiModelProperty("数据条数")
    private Integer total;

    public ResponseResult() {
    }

    private ResponseResult(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }



    public static <T> ResponseResult<T> success(int row) {
        if(row > 0) return new ResponseResult<>(OK_CODE, "成功", null);
        else return new ResponseResult<>(FAIL_CODE, "失败", null);
    }

    public static <T> ResponseResult<T> success() {
        return new ResponseResult<>(OK_CODE, "成功", null);
    }

    public static <T> ResponseResult<T> success(T data) {
        return new ResponseResult<T>(OK_CODE, "成功", data);
    }

    public static <T> ResponseResult<T> success(String msg, T data) {
        return new ResponseResult<>(OK_CODE, msg, data);
    }

    public static <T> ResponseResult<T> fail() {
        return new ResponseResult<>(FAIL_CODE, "失败", null);
    }

    public static <T> ResponseResult<T> fail(String msg) {
        return new ResponseResult<T>(FAIL_CODE, msg, (T) null);
    }

    public static <T> ResponseResult<T> fail(String msg, T data) {
        return new ResponseResult<>(FAIL_CODE, msg, data);
    }

}
